package com.codeshellme.bookmanager.dao;

import com.codeshellme.bookmanager.dto.UmsMenu;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Map;

@Mapper
@Repository
public interface UmsMenuDao {
    // 查询全部菜单
    List<Map<String, Object>> queryMenus(String type);

    // 查询全部菜单
    List<Map<String, Object>> queryMenusStatus(String type, Integer status);

    // 根据 id 查询菜单
    Map<String, Object> queryMenuById(Integer id, Integer status);

    // 根据 id 查询查询子目录
    List<Map<String, Object>> querySubMenusById(Integer id);

    // 更新菜单内容
    int updateMenu(UmsMenu menu);

    // 添加菜单
    int addMenu(UmsMenu menu);

    // 删除菜单
    int deleteMenuById(Integer id);

    /**
     * 根据用户ID，查询它所属的角色，并查询该角色的菜单
     */
    List<Map<String, Object>> queryRoleMenusByUserId(Integer userId, String menuType);


    /**
     * 供 SecurityConfig 使用
     * 查询每个菜单的 url 所需的角色
     * 比如要想访问 /role 路径，必须拥有 super或者manager 角色
     *
     * 返回结果
     * /book_borrow	super,user
     * /book_stock	super
     * /menu	    super
     * /role	    super,manager
     * /sys_author	super
     * /sys_book	super
     * /sys_dict	super
     * /user	    super
     */
    List<Map<String, Object>> queryMenuUrlNeedRoleIds();
}
